package com.sooth.system.menu.view;

import com.dream.system.annotation.View;
import com.dream.util.tree.Tree;
import com.sooth.system.menu.table.SysMenu;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 菜单权限表
 * @Author: Lion Li
 * @Date: 2023-09-04 09:44:51
 */
@Data
@View(SysMenu.class)
public class SysMenuVo implements Tree<Long> {

    /**
     * 菜单ID
     */
    private Long id;

    /**
     * 菜单名称
     */
    private String menuName;

    /**
     * 父菜单ID
     */
    private Long parentId;

    /**
     * 显示顺序
     */
    private Integer orderNum;

    /**
     * 组件地址
     */
    private String component;

    /**
     * 组件名称
     */
    private String componentName;

    /**
     * 访问路径
     */
    private String path;

    /**
     * 路由参数
     */
    private String param;

    /**
     * 组件类型（0路由视图 1路由全屏 2外部链接 3嵌入链接）
     */
    private Integer componentType;

    /**
     * 是否缓存（0不缓存 1缓存）
     */
    private Integer keepAlive;

    /**
     * 菜单类型（0目录 1菜单 2按钮）
     */
    private Integer menuType;

    /**
     * 是否固定标签（0 不固定 1固定）
     */
    private Integer affix;

    /**
     * 显示状态（0显示 1隐藏）
     */
    private Integer hide;

    /**
     * 权限标识
     */
    private String perm;

    /**
     * 菜单图标
     */
    private String icon;

    private List<SysMenuVo> children;

    @Override
    public Long getTreeId() {
        return id;
    }

    @Override
    public List<? extends Tree> getChildrenOrNew() {
        if (children == null) {
            children = new ArrayList<>();
        }
        return children;
    }
}
